Skip to content

12-Il Parcheggio Smart (Accesso Automatizzato con Conteggio) ๐Ÿ…ฟ๏ธ๐Ÿค– โ€‹

Hardware: Micro:bit + Microcar, 1x Servo SG90 (sbarra su P10), Sensore Ultrasuoni.

Obiettivo: Comprendere il controllo angolare di un servo, usare variabili come contatori e gestire la logica "a cascata" (if-then-else if).

Fase 1: L'Apertura Meccanica ๐Ÿ—๏ธ๐Ÿ•น๏ธ โ€‹

Obiettivo: Far alzare la sbarra quando un'auto (o una mano) si avvicina. Non contiamo ancora.

Logica (Teoria): Dobbiamo dire al Micro:bit: "Se vedi qualcosa a meno di 10cm, apri la sbarra per 2 secondi, poi richiudila".

๐Ÿงฉ La composizione dei Blocchi (Sprint 1): โ€‹

  1. On start (All'avvio): Inizializziamo il servo in posizione di chiusura.
    • servomotore scrivi pin [P10] angolo [90] (Sbarra abbassata).
  2. Forever (Per sempre): Il ciclo di controllo.
    • Crea la variabile distanza.
    • imposta [distanza] a (Ultrasonic port (cm)) (Dalla categoria MiniCar).
    • Inserisci un blocco se ... allora ... altrimenti:
    • Condizione: se [distanza] < [10]:
      • (Dentro il "SE" - Sequenza Apertura)
        • servomotore scrivi pin [P10] angolo [180] (Sbarra alzata).
        • pausa (ms) [2000] (Attesa 2 secondi per far passare l'auto).
        • servomotore scrivi pin [P10] angolo [90] (Sbarra abbassata).
        • pausa (ms) [200] (Tempo tecnico per il movimento).
    • (Dentro "ALTRIMENTI")
      • servomotore scrivi pin [P10] angolo [90] (Assicurati che rimanga chiusa se non c'รจ nessuno).

Test 1: Avvicinando la mano al sensore, la sbarra si alza, aspetta e si riabbassa.

Fase 2: Il Contatore e il "Tutto Pieno" ๐Ÿ”ข๐Ÿšซ โ€‹

Obiettivo: Introduciamo la variabile contatore. La sbarra si apre solo se c'รจ posto (contatore < 5). Quando arriva a 5, mostra "PIENO".

๐Ÿงฉ La composizione dei Blocchi (Sprint 2): โ€‹

  1. On start (All'avvio):
    • servomotore scrivi pin [P10] angolo [90]
    • imposta [contatore] a [0] (Il parcheggio รจ vuoto all'inizio).
  2. Forever (Per sempre): Modifichiamo la logica dentro l'if della distanza.
    • Se distanza < 10:
      • Dobbiamo fare un secondo controllo: c'รจ posto?
      • Inserisci un blocco se [contatore] < [5] dentro l'if della distanza.
        • (Dentro il "SE contatore < 5")
          • Esegui la Sequenza Apertura vista nello Sprint 1.
          • pausa (ms) [200] (Tempo tecnico per il movimento).
          • cambia [contatore] per [1] (Incrementa di 1).
          • mostra numero (contatore) (Opzionale: feedback visivo).
      • (ALTRIMENTI del "SE contatore < 5")
        • mostra stringa "PIENO"
        • servomotore scrivi pin [P10] angolo [90] (Sbarra ferma, non si apre).

Test 2: Avvicinando la mano 5 volte, il numero sale. Alla sesta volta, la sbarra non si alza e il Micro:bit scrive "PIENO".

Fase 3: Gestire l'Uscita (Tasto A) ๐Ÿ”™๐Ÿ†“ โ€‹

Obiettivo: Aggiungere il pulsante A per far uscire le auto. La sbarra si apre, il contatore scende di 1. Non scendiamo sotto lo zero e mostriamo "LIBERO".

๐Ÿงฉ La composizione dei Blocchi (Sprint 3): โ€‹

Questa parte va inserita all'interno del forever, ma in una sezione separata o in un blocco on button A pressed. Usando il codice nella tua foto, l'hai messa nel forever, subito dopo i blocchi della distanza.

  1. Forever (Per sempre): (Aggiungiamo la logica dopo la gestione dell'ingresso)
    • Inserisci un nuovo blocco se ... allora ... altrimenti:
    • Condizione: se pulsante A premuto:
      • (Dentro il "SE pulsante A premuto")
        • Dobbiamo controllare se c'รจ almeno un'auto dentro per farla uscire.
        • Inserisci un blocco se [contatore] > [0] dentro l'if del pulsante A.
      • (Dentro il "SE contatore > 0")
        • Esegui la Sequenza Apertura vista nello Sprint 1.
        • pausa (ms) [200] (Tempo tecnico per il movimento).
        • cambia [contatore] per [-1] (Decrementa di 1).
        • mostra numero (contatore) (Opzionale: feedback visivo).
    • (ALTRIMENTI del "SE contatore > 0")
      • mostra stringa "LIBERO" (O "VUOTO").
      • servomotore scrivi pin [P10] angolo [90] (Sbarra ferma).

Fase 4: Debugging Finale e Problem Solving ๐Ÿ”ง โ€‹

Fai un collaudo completo in classe. Ecco cosa succede solitamente:

  • Il servo "scotta" o vibra: L'angolo 180ยฐ o 90ยฐ รจ troppo estremo per il meccanismo meccanico della tua sbarra. Modifica gli angoli nel codice (es. 160ยฐ per aperto e 100ยฐ per chiuso).
  • Doppio conteggio: Se una macchina ci mette troppo a passare, il sensore la legge due volte. Alza la pausa di apertura (da 2000ms a 3000ms).